/*************************************************
* Title：TinyToolKit
* Author：Opportunity 
* Describe：定义TinyToolKit管理类的基类
* CreateTime：2020-04-05 19:29:23
* Version：1.0
* Modify Recorder：
*************************************************/

using UnityEngine.SceneManagement;

namespace TinyToolKit
{
    /// <summary>
    /// 工具管理类的抽象基类
    /// </summary>
    public abstract class ManagerBase  
    {
        /// <summary>
        /// 工具管理类的优先级,优先级较高的模块会优先轮询，并且关闭操作会后进行
        /// </summary>
        public virtual int Priority => 0;

        /// <summary>
        /// 初始化
        /// </summary>
        public abstract void Init();

        /// <summary>
        /// 轮询
        /// </summary>
        public abstract void UpdateManager();

        /// <summary>
        /// 关闭并清理工具管理类
        /// </summary>
        public abstract void Shutdown();

        /// <summary>
        /// 场景切换时的回调函数
        /// </summary>
        public virtual void OnSceneLoaded(Scene scene, LoadSceneMode mode) { }
    }
}
